#ifndef MAPWINDOW_H
#define MAPWINDOW_H

#include <QWidget>
#include <QNetworkReply>
#include <QFile>
#include <QEvent>
#include <QPoint>
#include <QLineEdit>

#define DEFAULT_LNG "116.413"
#define DEFAULT_LAT "39.9109"

namespace Ui
{
    class MapWindow;
}

class MapWindow : public QWidget
{
    Q_OBJECT

public:
    explicit MapWindow(QWidget *parent = nullptr);
    ~MapWindow();

    void updateMap(); // 更新地图函数

    QString getLocalIp(); // 获取本地Ip函数

    void updateCoordsByIp(QString mapIp); // 更新经纬度函数

    void updateCoordsByCityName(QString cityName); // 更新经纬度函数

    bool eventFilter(QObject *watched, QEvent *event); // 拖动地图事件过滤器

    void setupSearch(QLineEdit *input);

private slots:
    void on_button_back_clicked(); // 返回主页面按钮槽函数

    void showMap(); // 展示图片槽函数

    void readMapData(); // 读取图片数据槽函数

    void on_button_big_clicked(); // 放大地图按钮槽函数

    void on_button_small_clicked(); // 缩小地图按钮槽函数

    void onTextChanged(const QString &text); // 输入框文本变化槽函数

signals:
    void backSignal();

private:
    Ui::MapWindow *ui;

    QString lng = DEFAULT_LNG; // 经度
    QString lat = DEFAULT_LAT; // 维度
    int zoom = 11;             // 地图级别
    QNetworkReply *reply;
    QFile *file;               // 图片文件
    QPoint point, last_point;  // 按下坐标
    bool pres_flag, rele_flag; // 按下松开标志
};

#endif // MAPWINDOW_H
